<?
  set_time_limit(4500);
  /* Se asegura que el archivo es incluido por el index */
    defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Actividad_exe( $this );

	class Actividad_exe extends Exe
	{
	function Actividad_exe( &$oModule )
		{
			$this->Exe( $oModule );
		}
	function updateTag()
		{
			$ncActividad = getParam( 'ncActividad' );
			$ncRotulo = getParam( 'ncRotulo' );
			$cNewItem = getParam( 'newItem' );
			if ( $cNewItem )
			{
				$ncRotulo = $this->oDatabase->nextKey( "gtRotuloActividad", "ncRotulo" );
				$bOk = $this->oDatabase->insert( "gtRotuloActividad",
										"ncRotulo", $ncRotulo, "cdRotulo", $cNewItem );
			}
			if ( $ncActividad && $ncRotulo )
			{
				$bOk = $this->oDatabase->insert( "gtActividadRotulo",
										"ncRotulo", $ncRotulo, "ncActividad", $ncActividad );
			}
		}
		// AGREGAR_ACTIVIDAD_PORTAL
		function insert()
		{
			// Convierte a variables los datos del Formulario asociado a la accion
			$oForm = $this->oModule->loadClass( 'Actividad_frm' );
			extract( $oForm->getFieldArray() );
			// Busca el siguiente id
			$ncActividadAnterior      = $ncActividad;
			$ncActividad      = $this->oDatabase->nextKey("gtActividad", "ncActividad"  );
			$this->oDatabase->insert("gtActividad"
								,"ncActividad", $ncActividad
								,"ncRecorrido", $ncRecorrido
								,"ncOrganizacion", $ncOrganizacion
								,"ncTipoAgenda", $ncTipoAgenda
								,"ncCategoriaActividad", $ncCategoriaActividad
								,"ncEstablecimiento", $ncEstablecimiento
								,"cdActividad", $cdActividad
								,"cEmail", $cEmail
								,"cTelefono", $cTelefono
								,"cPaginaWeb", $cPaginaWeb
								,"ncEspecial", $ncEspecial
								,"cDescripcion", $cDescripcion
								,"cEntrada", $cEntrada
								,"dSugerida", $dSugerida
								,"dModificacion", Date('Y-m-d')
								,"dAlta", Date('Y-m-d')
								,"cVolanta", $cVolanta );
			if ( $ncActividadAnterior )
			{
				$this->oDatabase->execute("insert gtActividadFoto ( ncActividad, ncFoto, cArchivo, cTitulo, nOrden, nAlto, nAncho ) 
					SELECT $ncActividad, ncFoto, cArchivo, cTitulo, nOrden, nAlto, nAncho FROM gtActividadFoto WHERE ncActividad = $ncActividadAnterior "  );
			}
			$aHorarioOrdenado = unserializeHorario ( $cHorario ) ;
			$ncOrden = 1;
			foreach( $aHorarioOrdenado  as $aHorario )
			{
				$this->oDatabase->insert('gtActividadTiempo'
					  ,'ncOrden', $ncOrden
					  ,'ncActividad',  $ncActividad
					  ,'dDesde' , $dDesde
					  ,'dHasta', $dHasta
					  ,'nTipoRepeticion', 4
					  ,'nFrecuencia', 1
					  ,'cDias', str_pad( sprintf('%b', $aHorario[0]), 8, "0", STR_PAD_LEFT)
					  ,'nTipoHorario', $aHorario[1]
					  ,'nHoraDesde', str_replace( ':', '', $aHorario[2])
					  ,'nHoraHasta', str_replace( ':', '', $aHorario[3]) );
				$ncOrden++;
			}
			// Agrega los rotulos
				$aRotulo = $oForm->aFields['aRotulo']->getValue();
				foreach ( $aRotulo as $ncRotulo )
				{
					$bOk = $this->oDatabase->insert( "gtActividadRotulo",
											"ncRotulo", $ncRotulo,
											"ncActividad", $ncActividad);
				}			
			$oForm->reset();
		}

		// ELIMINAR_ACTIVIDAD_PORTAL
		function delete()
		{
			$ncActividad = getParam( 'ncActividad' );
			$this->oDatabase->delete("gtActividad","ncActividad", $ncActividad );
		}

		// MODIFICAR_ACTIVIDAD_PORTAL
		function update()
		{
			if( array_key_exists ( 'bEstrella' , $_GET ) ) 
			{
				$this->oDatabase->update( "gtActividad", "bEstrella", getParam( 'bEstrella' ), "WHERE", "ncActividad", $ncActividad );
				return false;
			}
			// Convierte a variables los datos del Formulario asociado a la accion
			$oForm = $this->oModule->loadClass( 'Actividad_frm' );
			$aDatos =  $oForm->getFieldArray();
			
			/*
			if ( $aDatos['cHorario'] )
			{
				$aHorarioOrdenado = unserializeHorario ( $aDatos['cHorario'] ) ;
				$ncOrden = 1;
				$this->oDatabase->delete('gtActividadTiempo' ,'ncActividad',  $aDatos['ncActividad'] );
				foreach( $aHorarioOrdenado  as $aHorario )
				{
					$this->oDatabase->insert('gtActividadTiempo'
						  ,'ncOrden', $ncOrden
						  ,'ncActividad',  $aDatos['ncActividad']
						  ,'dDesde' , $aDatos['dDesde']
						  ,'dHasta', $aDatos['dHasta']
						  ,'nTipoRepeticion', 4
						  ,'nFrecuencia', 1
						  ,'cDias', str_pad( sprintf('%b', $aHorario[0]), 8, "0", STR_PAD_LEFT)
						  ,'nTipoHorario', $aHorario[1]
						  ,'nHoraDesde', str_replace( ':', '', $aHorario[2])
						  ,'nHoraHasta', str_replace( ':', '', $aHorario[3]) );
					$ncOrden++;
				}
			}
			*/
				extract($aDatos);
				$bOk = $this->oDatabase->delete( "gtActividadRotulo","ncActividad", $ncActividad);
			// Agrega los rotulos
				$aRotulo = $oForm->aFields['aRotulo']->getValue();
				foreach ( $aRotulo as $ncRotulo )
				{
					$bOk = $this->oDatabase->insert( "gtActividadRotulo",
											"ncRotulo", $ncRotulo,
											"ncActividad", $ncActividad);
				}						
				$this->oDatabase->update("gtActividad"
						,"ncTipoAgenda", $ncTipoAgenda
						,"ncRecorrido", $ncRecorrido
						,"ncOrganizacion", $ncOrganizacion
						,"ncCategoriaActividad", $ncCategoriaActividad
						,"ncEstablecimiento", $ncEstablecimiento
						,"cdActividad", $cdActividad
						,"cEmail", $cEmail
						,"cTelefono", $cTelefono
						,"cPaginaWeb", $cPaginaWeb
						,"ncEspecial", $ncEspecial
						,"cDescripcion", $cDescripcion
						,"cEntrada", $cEntrada
						,"dSugerida", $dSugerida
						,"cVolanta", $cVolanta 
						,"dModificacion", Date('Y-m-d')
						,"WHERE"
						,"ncActividad", $ncActividad	);			
		}
	}
?>